October 15, 2020
ํ์ด๋ฒ์ ์ดํดํ๊ณ ๋์ด๊ฐ๊ณ ์ถ์ง๋ง, ๋ด๊ฐ ํธ๋ ๋ฐฉ์์์ ์๋์ด ๋๊ฒ ๋ง๋๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ถ์๋ค. (์ฌ์ค ํ์ด๋ฒ์ด ์ดํด๊ฐ ๋์ง ์์์ ์ด๊ธฐ๋ ํ๋ค.)
์ฝ๋๋ฅผ ๋ธ๋ก๊ทธ์ ์ฌ๋ฆฌ๋ ๊ฒ์ ๊ฐ๊ธ์ ์ง์ํ๊ณ ์ถ์ง๋ง ๋๋ ๊ทธ๋ ๊ฒ ์๊ฐํ๋ค.
์ด ์ฝ๋๋ฅผ ๋ฒ ๊ปด ๋ณต๋ถํด ๋ฃ์ด ํต๊ณผํด์ ๋ํต๋ น ํ์ฐฝ์ฅ ๋ฐ๋ ๊ฑฐ ์๋์ง ์๋๊ฐ ์ถ๋ค. ์ฝ๋ ๋ฒ ๊ปด ๋ฃ์ด์ ํต๊ณผ๋์๋ค๊ณ ๊ทธ๊ฒ ์๊ธฐ๊บผ ๋๋ ๊ฑด ์๋ํ ๋ ๋ณธ์ธ์ด ๋ ์ ์๊ฒ ์ง ์ถ๋ค.
์ฌํผ ๊ฐ์คํ๊ณ ์ธ๋๋ฐ _.intersection ์ ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ํ๊ณ ์๋ค.
_.intersection์ ์ฌ๋ฌ ๊ฐ์ ๋ฐฐ์ด์ ์
๋ ฅ๋ฐ์, ๊ต์งํฉ ๋ฐฐ์ด์ ๋ฆฌํดํฉ๋๋ค.
๊ต์งํฉ ๋ฐฐ์ด์ ๋ชจ๋ ๋ฐฐ์ด์ ๊ณตํต์ผ๋ก ๋ฑ์ฅํ๋ ์์๋ค๋ง์ ์์๋ก ๊ฐ๋ ๋ฐฐ์ด์
๋๋ค.
๊ต์งํฉ ๋ฐฐ์ด์ ์์๋ค์ ์ฒซ ๋ฒ์งธ ์
๋ ฅ์ธ ๋ฐฐ์ด์ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค.
๊ต์งํฉ์ด ์๋ ๊ฒฝ์ฐ ๋น ๋ฐฐ์ด์ ๋ฆฌํดํฉ๋๋ค.
์๋ ์์ ๋ฅผ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
const set1 = ['a', 'e', 'b', 'c'];
const set2 = ['c', 'd', 'e'];
const result = _.intersection(set1, set2);
console.log(result) // --> ['e', 'c']
// ์ฒซ ๋ฒ์งธ ๋ฐฐ์ด์ 'e'๊ฐ ๋จผ์ ๋ฑ์ฅ
_.intersection = function(...arrays) {
let lumpOfArrays = []
let arrNum = arrays.length
console.log(arrNum)
_.each(arrays, function(arr) {
lumpOfArrays.push(...arr)
})
let transObj = {}
for (let i = 0; i < lumpOfArrays.length; i++) {
if (!_.includes(Object.keys(transObj), lumpOfArrays[i])) {
transObj[lumpOfArrays[i]] = 1
} else {
transObj[lumpOfArrays[i]] = transObj[lumpOfArrays[i]] + 1
}
}
let result = []
for (let key in transObj) {
if (transObj[key] === arrNum) {
result.push(key)
}
}
return result
}
๋ง์ง๋ง ์ผ์ด์ค๋ฅผ ์ ์ธํ๊ณ ๋ ํต๊ณผ๊ฐ ๋๋ค, ๋ง์ง๋ง ์ผ์ด์ค๋ฅผ ํต๊ณผํ์ง ๋ชปํ๋ ์ด์ ๋ Object.keys(transObj) ์ฌ๊ธฐ์ ๋ค์ด๊ฐ๋ ์ฆ, ๊ฐ์ฒด์ ๋ค์ด๊ฐ๋ ํค๋ ๋ชจ๋ ๋ฌธ์์ด๋ก ๋ณํ๋๊ธฐ ๋๋ฌธ์ธ๋ฏ ์ถ๋ค. ๊ทธ๋์ ์ซ์๋ ๋ฌธ์์ด๋ก ๋ฐ๋์ด ํค๊ฐ ๋ค์ด๊ฐ๋๋ฐ, ํฌํ๋ฐ์คํฌ์ ์ข์ ๋ต๋ณ์ ๋ฐ์ ์ํฉ์์ ๋ด์ผ ๋ค์ ํธ๋ผ์ด ํด๋ณด๋ ค ํ๋ค.